package com.ruoyi.project.pro.line.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.exception.cms.CmsNotDeleteException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.project.cms.content.domain.CmsContent;
import com.ruoyi.project.cms.type.domain.CmsType;
import com.ruoyi.project.pro.line.domain.ProLine;
import com.ruoyi.project.pro.line.mapper.LineMapper;
import com.ruoyi.project.pro.line.service.ILineService;
import com.ruoyi.project.pro.manager.mapper.ProManagerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @program: zhizun
 * @author: Mrs.ye
 * @create: 2020-09-16 22:22
 * @description:
 **/

@Service
public class LineServiceImpl implements ILineService {
    @Autowired
    private LineMapper lineMapper;
    @Autowired
    private ProManagerMapper proManagerMapper;
    /**
     * 分页查询产品系列
     * @returnz
     */
    @Override
    public List<ProLine> selectLine(ProLine proLine) {
        return lineMapper.selectLineList(proLine);
    }


    /**
     * 校验岗位名称是否唯一
     *
     * @param proLine 产品系列信息
     * @return 结果
     * 根据公告的名字到数据库中查询公告
     * 将数据库中公告的id传进来的公告id进行对比
     */
    @Override
    public String checkLineNameUnique(ProLine proLine) {
        Long lineId = StringUtils.isNull(proLine.getLineId()) ? -1L : proLine.getLineId();
        ProLine info = lineMapper.checkLineNameUnique(proLine.getLineName());
        //如果根据公告名称查询出来了公告,并且查询出来的公告id和原本的id不同,表示同一个公告名称有不同的id,
        //反过来就是说不同的id相同的公告名称,这样公告名称就不唯一了
        if (StringUtils.isNotNull(info) && info.getLineId().longValue() != lineId.longValue())
        {
            return UserConstants.TYPE_CODE_NOT_UNIQUE;
        }
        return UserConstants.TYPE_CODE_UNIQUE;
    }

    /**
     * 新增产品系列
     * @param proLine
     * @return
     */
    @Override
    public int insertProLine(ProLine proLine) {
        proLine.setCreateBy(ShiroUtils.getLoginName());
        return lineMapper.insertProLine(proLine);
    }

    /**
     * 通过id查询产品系列
     * @param lineId
     * @return
     */
    @Override
    public ProLine selectLineById(Long lineId) {
        ProLine proLine = lineMapper.selectLineById(lineId);
        System.out.println(proLine);

        return proLine;
    }

    /**
     * 修改产品系列
     * @param proLine
     * @return
     */

    @Override
    public int updateLine(ProLine proLine) {
        proLine.setUpdateBy(ShiroUtils.getLoginName());
        return lineMapper.updateLine(proLine);
    }

    /**
     * 删除
     * @param ids
     * @return
     */
    @Override
    public int removeProLineById(Long[] ids) {
        boolean flag=true;

        for (Long id : ids) {
            Integer proLines=  proManagerMapper.selectLineByLineId(id);
            if(proLines>0){
                flag=false;
                break;
            }
        }
        if(!flag){
            throw new CmsNotDeleteException("系列还有系列内容,不能删除");
        }
        return lineMapper.removeProLineById(ids);
    }
}
